package net.hands.ado.db;

import net.hands.common.StringUtils;
import net.hands.common.ado.IParamsValue.AbstractParamsValue;

/**
 * 说明:带参数sql
 * <br>
 * <p>这是一个开源的软件，请在LGPLv3下合法使用、修改或重新发布。</p>
 * @author 陈侃(cknet@126.com, 13910090885)
 *         http://code.google.com/p/simpleframework/
 *         http://www.simpleframework.net
 */
public class SQLValue extends AbstractParamsValue {
	private static final long serialVersionUID = -293936736340487065L;
   /**
    * sql语句
    */
	private String sql;
	 /**
    * 
   * Constructor Method  
   * @update 2012-8-6 上午10:53:33  
   * @param sql  纯sql
    */
	public SQLValue(final String sql) {
		this.sql = sql;
	}
	 /**
    * 
   * Constructor Method  
   * @update 2012-8-6 上午10:52:29  
   * @param sql  含变量sql语句
   * @param values sql中变量对象数组
    */
	public SQLValue(final String sql, final Object... values) {
		this.sql = sql;
		setValues(values);
	}
	 /**
   * 说明:获得sql
   * @return String
   * @update 2012-8-6 上午10:53:22
    */
	public String getSql() {
		return sql;
	}
	/**
   * 说明:设置sql
   * @param sql
   * @update 2012-8-6 上午10:54:05
    */
	public void setSql(final String sql) {
		this.sql = sql;
	}
   /**
    * sql语句的hash值 - 参数字符串
   (non-Javadoc)  
   * @see net.hands.common.ado.IParamsValue#getKey()  
   * @update 2012-9-15 下午10:10:08
    */
	@Override
	public String getKey() {
		final StringBuffer sb = new StringBuffer();
		sb.append(StringUtils.hash(sql)).append("-").append(valuesToString());
		return sb.toString();
	}
}
